package example;

import grafico.GraficoListener;
import malhaFerroviaria.Ferrovia;
import project.Controle;

/**
 * Exemplo de uso do Simulador da malha ferrovi�ria e do m�dulo gr�fico
 * gentilmente cedido pelo grupo do Luiz Guilherme, Leandro e Leonardo.
 * A classe Ferrovia � a 'fachada' (design pattern fa�ade) para
 * as classes que implementam os elementos da malha ferrovi�ria.
 * Ela tamb�m � implementa o pattern 'singleton': uma �nica inst�ncia
 * da ferrovia � criada.
 * Essa classe implementa a interface ControleFerrovia, que prev�
 * a publica��o dos m�todos necess�rios para o Centro de Controle.
 * @author Vanini
 *
 */

public class Exemplo1Gr {
	


	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args){
		
		// 1 - Pegar a inst�ncia �nica da Ferrovia
		Ferrovia ferrovia = Ferrovia.getInstance();
		
		// 2 - Definir um cen�rio para a simula��o
		ferrovia.defineCenario(7);
		// 3 - Registrar os tratadores de evento
		ferrovia.registraTratadorDeEventos(new Controle());
		ferrovia.registraTratadorDeEventos(new GraficoListener());

		
		// 4 - Rodar a simula��o
		try{
			ferrovia.simularCenario(0, 10000);
			
		}catch(Exception ee){
			System.out.println("Exce��o:"+ee.getClass().getName()+"::"+ee.getMessage());
			ee.printStackTrace();
		}
		System.out.println("*=*=*= Fim da Simula��o =*=*=*");

	}

}